Come detto prima, ADO è lo strumento necessario per operare sulla fonte di dati ODBC (il vostro database). Di questo componente bisogna assolutamente conoscere l'oggetto Connection, indispensabile per il suo utilizzo.
L'oggetto Connection viene creato tramite il metodo CreateObject dell'oggetto Server e utilizza una variabile per ricevere il riferimento ad un'oggetto. Una volta creato, l'oggetto Connection può essere utilizzato per aprire una connessione con qualsiasi fonte di dati ODBC.
Quest'operazione avviene con l'ODBC Data Source Administrator, generalmente localizzato nel Pannello di controllo. La realizzazione della sorgente di dati avviene selezionando la pagina System DNS nel property sheet ODBC data source Administrator. In questa pagina premere il pulsante Add... per visualizzare un elenco di tutti i driver ODBC disponibili. Dopo aver selezionato il driver ODBC appropriato premere il pulsante Finish che introduce un nuovo oggetto.
Il codice seguente stabilisce una connessione con una fonte di dati ODBC Microsoft Access Driver chiamata Registrazioni.
<%
' dichiaro la variabile che conterrà l'oggetto Connection
Dim conn
'creo l'oggetto Connection
Set conn = Server.CreateObject("ADODB.Connection")
'apro la connessione con la fonte di dati
conn.Open "Registrazioni"
%>
In alcuni casi, ad esempio per non costringere il proprio amministratore a creare una quantità elevata di sorgenti ODBC, è possibile creare, ma solo nel caso in cui il database sia Access, una connessione DSN-less.
Tutto quello per compiere un'operazione di questo tipo è usare al posto del codice precedente, quest'altro:
<%
' dichiaro la variabile che conterrà l'oggetto Connection
Dim conn
'creo l'oggetto Connection
Set conn = Server.CreateObject("ADODB.Connection")
'apro la connessione con la fonte di dati
conn.Open "driver={Microsoft Access Driver
(*.mdb)};dbq="&Server.MapPath("/data/database.mdb")
%>
Naturalmente al posto di "/data/database.mdb" va inserito l'esatto percorso di ricerca in cui è stato salvato il file mdb.
Una volta aperta la connessione con la fonte di dati, è possibile utilizzare un oggetto Recordset per recuperare le informazioni. L'oggetto Recordset consente di eseguire le istruzioni SQL restituendo un insieme di record filtrati tramite la query. Come l'oggetto Connection, Recordset viene creato utilizzando l'oggetto Server.
<%
' dichiaro la variabile che conterrà l'oggetto Recordset
Dim rs
'creo l'oggetto Recordset
Set rs = Server.CreateObject("ADODB.Recordset")
'Eseguo la query SQL SELECT
rs.Open "SELECT *", conn
%>
Dopo aver recuperato i record è possibile leggerli con i metodi MoveFirst, MoveLast, MoveNext e MovePrevious. Il metodo Write dell'oggetto Response consente di dare in output i dati sulla pagina in HTML.
<TABLE>
<%
Do While not rs.EOF
%>
<TR>
<TD><% rs.Fields("colonna").Value %></TD>
</TR>
<%
rs.MoveNext
Loop
%>
</TABLE>
Esempi di interrogazioni semplici
Spesso una query restituisce molte più righe di quante possano essere visualizzate. Ad esempio un motore di ricerca Internet può avere migliaia di riferimenti rispetto alla parola chiave cercata ed è chiaro che non è consigliabile visualizzare tutti i dati in un'unica pagina.
La paginazione consente di distribuire i risultati su più pagine. ADO
supporta la paginazione tramite le proprietà PageSize, PageCount a AbsolutePage
dell'oggetto recordset.
La proprietà PageSize specifica quante ennuple devono
essere contenute nella pagina, e tramite la proprietà PageCount, è possibile
determinare il numero complessivo di pagine. E' Possibile accedere ad una
determinata pagina tramite la proprietà AbsolutePage.
Il programma richiede un solo file ASP per eseguire tutto il processo di
navigazione.
Esempio di interrogazione con paginazione
SQL (che si pronuncia siquel) è l'abbreviazione di Structured Query Language e rappresenta lo standard per la definizione, l'interrogazione e l'aggiornamento di database relazionali. In questo tutorial mi limiterò nel spiegare la più semplice e generale struttura del linguaggio SQL.
Le istruzioni in SQL vengono raggruppate a blocchi; ciascun blocco contiene tre tipi di clausole, la clausola SELECT, la clausola FROM, e la clausola WHERE.
SELECT nomi di attributi
FROM nomi di relazioni
WHERE condizione di ricerca sui dati,
Ad esempio, l'interrogazione per trovare il valore di IDENTIFICATIVO per l'azienda TRANSISTOR è espressa come segue:
SELECT IDENTIFICATIVO
FROM AZIENDE
WHERE NOMEAZIENDA = TRANSISTOR
Le tre clausole individuano rispettivamente:
Un'altra importante parola chiave è DISTINCT che prevede l'eliminazione delle ripetizioni dai risultati. Si utilizza immediatamente dopo la parola chiave SELECT.
SELECT DISTINCT Provincia
FROM Indirizzo
Le condizioni elementari che compaiono nella clausola WHERE possono avere altre forme, oltre a quelle già viste per l'operatore di selezione. Esse sono le seguenti.
I primi due casi selezionano rispettivamente i records in cui il valore dell'attributo è uguale ad uno dei valori elencati nella lista, e i records in cui il valore dell'attributo è compreso fra i due valori specificati o uguale ad uno di essi.
IN seleziona i records della relazione in cui il valore dell'attributo sia uno di quelli elencati nella lista di valori.
La parola chiave LIKE esegue un confronto selezionando i records in cui
l'attributo specificato nella stringa <stringa incompleta> ha
come valore una stringa che può essere rappresentara dalla stringa
incompleta.
Molto comoda è la parola chiave COUNT, che calcola il numero di records oppure il numero di valori distinti che soddisfano una certa condizione.
Le operazioni di inserimento vengono specificate per mezzo dell'istruzione INSERT che ha due possibili strutture:
INSERT INTO <nome relazione>
(<lista attributi>)
VALUES
(<lista valori>)
INSERT INTO <nome
relazione> (<lista attributi>)
SELECT (<lista valori>)
Esempio di inserimento di dati
L'eliminazione di records viene specificata per mezzo dell'istruzione DELETE.
DELETE FROM <nome
relazione>
WHERE
<condizione>
che elimina dalla relazione tutti i records che soddisfano la condizione.
La modifica di records viene specificata per mezzo dell'istruzione UPDATE.
UPDATE <nome relazione>
SET <attributo> =
<espressione>
<attributo> =
<espressione>
<attributo> =
<espressione>
.......
WHERE
<condizione>